Transformation of text is strategies to perform geometric transformations on text (reversals, rotations, etc), particularly in systems that do not natively support transformation, such as HTML, seven-segment displays and plain text.
Contents |
Many systems, such as HTML, seven-segment displays and plain text, do not support transformation of text. In the case of HTML, this limitation in display may eventually be addressed through standard cascading style sheets (CSS), since proposed specifications for CSS3 include rotation for block elements.[1] In the meantime, several ways of producing the visual effects of text transformations have come into use.
The most common of these transformations are rotation and reflection.
Unicode supports a variety of characters that resemble transformed characters, primarily for various forms of phonetic transcription. Each of these character names indicates what kind of transformation the characters have undergone:
Strategies can be used to render words upside down in languages such as HTML that do not permit rotation of text; using Unicode characters (especially those in the International Phonetic Alphabet), a very close approximation of upside-down text (also called flip text) can be achieved. The letters s, x, z and o are rotationally symmetrical, while pairs such as b/q, d/p and n/u are rotations of each other. The rest of the letters have been encoded into the Unicode IPA section, creating a full set of upside-down lowercase letters. Coverage of upside-down uppercase letters is far more sparse, and there is no support for upside down numbers (except 0, 8, and 6/9), but punctuation (by use of such characters as the interpunct and the inverted question mark and exclamation point) is mostly covered. Several Internet utilities exist for the transformation of regular text to (and sometimes from) upside-down text; each has its own slightly different algorithm for letters not precisely or well covered. A list of converters and algorithms can be found at the list below.
A similar process is USD encoding, which uses characters entirely within the ASCII character set. Because it is almost entirely alphanumeric, it is far more compatible with other programs that do not support Unicode, and more readily typed by hand. However, the text created by using USD encoding is far less legible, and in fact more closely resembles Leet. Another problem is that because not all letters fit well, the USD algorithms cannot be a complete involution (i.e., completely convertible back and forth) and contain a complete set of letters at the same time. For instance, the Albartus USD algorithm example seen in the "Examples" section below has k, T, t, and R still in their upright positions. Another issue with USD encoding is the use of italic type. The letter "a" will, in most typefaces using italic fonts, render it as a "one-story" Latin alpha, thus causing problems with any word using that letter as a lowercase "e." Oblique type does not have this problem.
Below is a table of one particular algorithm (Tomas Schild's upsidedown.info) and its complete transformation of lowercase, numeric and punctuation output. Note that the numeric output uses characters from hangul (Korean) for 2, the Latin epsilon for 3, as well as bopomofo (Chinese) for 4 and 7. (An earlier implementation of the Schild algorithm used a Canadian Aboriginal syllabics character, ᔭ, for upside-down 4.) Unusual sources for number transformations are necessary to achieve results that, at least cosmetically, are legible.
Lowercase Letters | z | ʎ | x | ʍ | ʌ | n | ʇ | s | ɹ | b | d | o | u | ɯ | l | ʞ | ɾ | ı | ɥ | ɓ | ɟ | ǝ | p | ɔ | q | ɐ |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
007A | 028E | 0078 | 028D | 028C | 006E | 0287 | 0073 | 0279 | 0062 | 0064 | 006F | 0075 | 026F | 006C | 029E | 027E | 0131 | 0265 | 0253 | 025F | 01DD | 0070 | 0254 | 0071 | 0250 | |
Uppercase Letters | Z | ⅄ | X | M | Λ | ∩ | ⊥ | S | ᴚ | Ό | Ԁ | O | N | W | ˥ | ⋊ | ſ | I | H | ⅁ | Ⅎ | Ǝ | ◖ | Ɔ | 𐐒 | ∀ |
005A | 2144 | 0058 | 004D | 039B | 2229 | 22A5 | 0053 | 1D1A | 038C | 0500 | 004F | 004E | 0057 | 02E5 | 22CA | 017F | 0049 | 0048 | 2141 | 2132 | 018E | 25D6 | 0186 | 10412 | 2200 | |
Numbers | 0 | 6 | 8 | ㄥ | 9 | ގ | ㄣ | Ɛ | ᄅ | ⇂ | ||||||||||||||||
0030 | 0036 | 0038 | 3125 | 0039 | 078E | 3123 | 0190 | 1105 | 21C2 | |||||||||||||||||
Punctuation | ⅋ | ‾ | ¿ | ¡ | „ | , | ˙ | ' | ؛ | |||||||||||||||||
214B | 203E | 00BF | 00A1 | 201E | 002C | 02D9 | 0027 | 061B |
Sideways text presents a unique problem. Though it is likely the most practical (as opposed to artistic) form of text transformation, it is the least supported and is the most difficult to implement. Unlike rotating text 180 degrees, the number of sideways characters falls far short of what would be needed for most purposes, and because text is rendered horizontally, it would be very difficult to render beyond one line of vertical text in a well-aligned manner without columns, especially in proportional fonts (furthermore, each character would require a line break after it). The process of using alternate characters for sideways text is further complicated by the fact that most fonts space letters further apart vertically (to accommodate underlining and overlining) than horizontally, and that most fonts are taller than they are wider, making simulated sideways text look significantly more awkward.
Internet Explorer has a CSS property that will rotate normally entered text 90 degrees clockwise:
<div style="writing-mode:tb-rl;">
However, no other major browsers (Mozilla Firefox, Opera nor WebKit based browsers such as Google Chrome) support this writing-mode property. However, CSS3 defines rotation for block elements, which should make the visual rotation of HTML text available to standards-compliant browsers as they are developed to support CSS3 completely.[1]
The most common way around these problems is to use images of text, which can then be rotated and transformed in an image editor at will, and to represent the text in those images with the alt attribute so that search engines and text-only browsers can read it properly.
Though less widespread, text can also be reversed to be a mirror image of itself. Letters A, H, I, M, O/o, T, U, V/v, W/w, X/x, Y, and in some fonts i and l are symmetrical in the y-axis; the pairs of b/d and p/q transform to each other. The letters И, Я, and г from Cyrillic, among other sources, are among the numerous characters that can be used to further generate this effect. Reversed text can use capital letters mixed with lowercase, as opposed to the strict lowercase used by upside-down transformation (upside-down lowercase and capital letters do not generally align as they would upright, though reversed letters do).
X-axis symmetry is visible in the letters B, C, D, E, H, I, K, O, and in some fonts a and l, as well as in the pairs of a/g, b/p, d/q, e/G, and f/t. Expanding to Cyrillic and Greek produces more symmetries, such as Λ/V and Γ/L.
The Fixedsys Excelsior typeface includes a complete set of reversed characters like this in its Private Use Area. However, online utilities to create mirrored text are not readily available, and most sites that claim to "mirror text" or "reverse text" in fact only change the order of the letters and do not actually flip the letters themselves.
Example of reversed text reflected along a y-axis:
Poet Darius Bacon has written two examples of palindromic poetry that reads the same upside-down as it does upside right.[2]
Converter | Lowercase | Uppercase | Numbers | Reconvert Backward |
Reflection | Character set | Provides HTML |
---|---|---|---|---|---|---|---|
CedarCreek Labs | Yes | Yes | Yes | No | No | Latin characters in Unicode | No |
Flip (revfad.com) |
Yes | No | No | Yes | No | Latin characters in Unicode | No |
Rot180 (logarithmic.net) |
Yes | Yes | Yes | No | No | All of Unicode Uses combining characters for some |
No |
Fliptext.org | Yes | No | No | No | No | Latin, with one exception | No |
Fliptext.net | Yes | No | Yes | Yes | No | Latin for letters all of Unicode for numbers |
No |
FlipThisText.com | Yes | No | No | Yes | No | Latin, with one exception | No |
Upside Down Letters (sevenwires.com) |
Yes | No | No | Yes | No | Latin, with one exception | No |
USD encoding (albartus.googlepages.com) |
Incomplete | Incomplete | Yes | Yes | No | ASCII | N/A |
NQAS (superliminal.com) |
Yes | Yes | No, errors | Almost | No | Windows-1252 | No |
UpsideDown.info | Yes | Incomplete | Yes | No | X-axis, Incomplete | All of Unicode | Yes |
UpsideDownText.com | Yes | Incomplete | Yes | Yes | Errors | Latin characters with Unicode | Yes |
Flipallwords.com | Yes | No | No | Yes | No | Latin for letters all of Unicode for numbers |
No |
Calculator spelling | Incomplete | Incomplete | Incomplete | No | No, but conceivable | Numerals 0-9 | No |
Write upside down (web2generators.com) |
Yes | Yes | Yes | Yes | No | All of Unicode | No |